package com.order.manager.controller.Qrcode;

import com.google.code.kaptcha.Producer;
import jakarta.annotation.Resource;
import jakarta.servlet.ServletOutputStream;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.IOException;

/**
 * 验证码控制器
 * 提供生成图形验证码的接口，路径为/api/auth/qrcode/{capText}
 * 功能：根据传入的四位随机数生成图片验证码，并存储到会话中
 */
@RestController
@RequestMapping("api/auth")
public class CaptchaController {

    // 注入Kaptcha验证码生成器，用于创建图形验证码
    @Resource
    Producer producer;
    @RequestMapping("/qrcode/{capText}")
    public void getCaptcha(HttpServletRequest request, HttpServletResponse response,
                           @PathVariable("capText") String capText) throws IOException {
        // 设置响应内容类型为JPEG图片
        response.setContentType("image/jpeg");
        // 将验证码文本存储到用户会话中，用于后续验证
        request.getSession().setAttribute("captcha", capText);
        // 使用Kaptcha生成器创建验证码图片（传入文本生成对应的图形）
        BufferedImage image = producer.createImage(capText);
        // 获取响应的输出流，用于写入图片数据
        ServletOutputStream out = response.getOutputStream();
        // 将图片数据写入输出流（格式为JPG）
        ImageIO.write(image, "jpg", out);
        // 刷新输出流，确保数据全部发送
        out.flush();
    }
}